package pe.com.cotelasa.scp.dao;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import pe.com.cotelasa.common.dao.IDao;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.entidad.CompraFacturacion;
import pe.com.cotelasa.scp.entidad.DetalleCompraFacturacion;

public interface IDAOCompraFacturacion extends IDao<CompraFacturacion, Integer> {

    public CompraFacturacion obtenerFacturaPorNumero(String numeroFactura) throws DAOException;
    
    public Collection<CompraFacturacion> obtenerFacturasProduccion() throws DAOException;
    
    public Collection<CompraFacturacion> buscarCompraFacturacionPorFiltro(CompraFacturacion factura, Date fechaInicio, Date fechaFinal) throws DAOException;
    
    public CompraFacturacion conseguirMasAntiguo(int idEmpresa) throws DAOException;
    
    public CompraFacturacion conseguirMasNuevo(int idEmpresa) throws DAOException;
    
    public BigDecimal buscarMontoPorMes(DetalleCompraFacturacion detalle, Date fecha,int idEmpresa) throws DAOException; 
    
    public Collection<CompraFacturacion> buscarFacturasParaLetras(Integer idProveedor,Integer idMoneda,String tipoPago,String estadoCancelacion,Character estadoRegistro) throws DAOException;
    
    public void actualizarFacturasPagadas(List<CompraFacturacion> listaCompraFacturacion) throws DAOException;
    
    public Collection<CompraFacturacion> obtenerCompraFacturacion(Integer idProveedor, Integer idMoneda,String estadoCancelacion, Character estadoRegistro,String numFactura)throws DAOException;
}